package thread;

/**
 * java中所有的代码都是靠线程运行的，main方法也不例外，执行main方法的线程是由JVM创建的并
 * 取名为"main"。因此我们也称它为"主线程"
 *
 * 线程有一个静态方法:
 * static Thread currentThread()
 * 该方法可以获取运行这个方法的线程
 */

public class CurrentThreadDemo {
    public static void main(String[] args) {
        //在main方法上定义下属方法就可以获得运行main方法的线程，即主线程
        Thread a = Thread.currentThread();
        System.out.println("主线程"+a);
        showThreadInfo();
    }

    public static void showThreadInfo(){
        //在任意方法下边使用该方法，找个引用接收，获得运行该方法的线程
        Thread b = Thread.currentThread();
        System.out.println("调用showThreadInfo方法的线程是"+b);

        /*
            线程提供了一组可以获取该线程相关信息的方法
            一般用于监控线程，看一看即可
         */

        //1. 获取线程的名字
        String name = b.getName();
        System.out.println(name);

        //2. id唯一标识
        long id = b.getId();
        System.out.println(id);

        //3. 线程的优先级1-10，1最低，10最高，一般线程默认5级
        int priority = b.getPriority();
        System.out.println(priority);

        //4. 线程是否走完了
        boolean isAlive = b.isAlive();
        System.out.println("是否活着："+isAlive);

        //5. 是否为守护线程
        boolean isDaemon = b.isDaemon();
        System.out.println("是否为守护线程"+isDaemon);

        //6. 线程是否被中断了
        boolean isInterrupted = b.isInterrupted();
        System.out.println("是否被中断了"+isInterrupted);
    }
}
